package com.softer.wxzj.service;

import com.github.pagehelper.PageInfo;
import com.softer.wxzj.common.entity.CommonResult;
import com.softer.wxzj.common.entity.Page;
import com.softer.wxzj.entity.BaseHouseInfo;
import com.softer.wxzj.entity.HouseAndOwner;
import com.softer.wxzj.entity.RefPayInfo;
import com.softer.wxzj.entity.RefReq;
import com.softer.wxzj.service.base.BaseService;

import java.util.List;

/**
 * RefPayInfoService class
 *
 * @author wxr
 * @date 2019/7/1
 */
public interface RefReqService extends BaseService<RefReq> {
    /**
     * 根据退款id查询退款明细
     * @param id
     * @return
     */
    PageInfo<RefPayInfo> getRefPayInfoByReqId(String id,Page page,String fuzzy);
    /**
     * 单个退款提交
     * @param refReq
     * @return
     */
    CommonResult save(RefReq refReq);
    /**
     * 单个退款提交
     * @param id 退款ID
     * @return 退款结果
     */
    CommonResult refSingleSubmit(String id,String arcType,String accNo);
    /**
     * 根据业主id查询退款基本信息
     * @param ownerId
     * @param refType 申请类型 01销户 02部分返还 03全额返还
     * @return
     */
    BaseHouseInfo getRefInfoByOwnerId(String ownerId,String refType);

    /**
     * 部分退款查询列表
     * @param page
     * @param refReq
     * @return
     */
    PageInfo<RefReq> getPartRefundList(Page page, RefReq refReq);

    /**
     * 退款撤销
     * @param id
     * @return
     */
    CommonResult refRevoke(String id);
    /**
     * 凭证打印列表
     * @return
     */
    PageInfo<HouseAndOwner> selectReqRefState(Page page, HouseAndOwner houseAndOwner);

    /**
     * 批量退款提交
     * @param list
     * @return
     */
    CommonResult refBatchSubmit( List<RefReq> list);

    /**
     * 查询批量退款列表
     * @param page
     * @param refReq
     * @return
     */
    PageInfo<RefReq> getBatchRefundList(Page page, RefReq refReq);

    /**
     * 查询待审批列表
     * @param page
     * @param refReq
     * @return
     */
    PageInfo<RefReq> getAuditList(Page page, RefReq refReq);

    /**
     * 凭证冻结撤销
     * @param page
     * @param refReq
     * @return
     */
    PageInfo<RefReq> documentFreezingRevocatio(Page page, RefReq refReq);

    /**
     * 查询退框详情（退款审核详情页面）
     * @param id
     * @return
     */
    RefReq getRefInfo(String id);

    /**
     * 审核
     * @param id
     * @param opinion
     * @param mark
     * @return
     */
    CommonResult audit(String id,String opinion ,String mark);

    /**
     * 退款在途查询列表
     * @param page
     * @param refReq
     * @return
     */
    PageInfo<RefReq> getRefList(Page page, RefReq refReq);

    /**
     * 有效期列表
     * @param id
     * @return
     */
    RefReq selectVaildDateById(String id);

    /**
     * 批量的凭证打印
     * @param page
     * @param refReq
     * @return
     */
    PageInfo<RefReq> selectAllReqRefState(Page page, RefReq refReq);

    /**
     * 查询资金撤销列表（审核通过，未记账）
     * @param page
     * @param refReq
     * @return
     */
    PageInfo<RefReq> getCancelRevokeList(Page page, RefReq refReq);

    /**
     * 资金撤销（审核通过，未记账）
     * @param id
     * @return
     */
    CommonResult refCancel(String id);
    /**
     * 资金退款，看是否可以退款
     */
     CommonResult drawback(String ownerId,String refType);

    /**
     * 全额退款和销户
     * @param ownerId
     * @param refType
     * @return
     */
     CommonResult selectpayAmount(String ownerId, String refType);

}
